textview: Fix drag highlight problems
authorSebastien Lafargue <slafargue@gnome.org>
Fri, 11 Mar 2016 18:09:06 +0000 (19:09 +0100)
committerSebastien Lafargue <slafargue@gnome.org>
Fri, 11 Mar 2016 18:14:16 +0000 (19:14 +0100)
gtk/gtktextview.c

index 346f89488c4b7fa7140f7981740ac8df27ae2244..6302676d0f2bdeda0896c2faf8cc785fe172657f 100644 (file)
@@ -1750,7 +1750,8 @@ gtk_text_view_init (GtkTextView *text_view)
   priv->selection_node = gtk_css_node_new ();
   gtk_css_node_set_name (priv->selection_node, I_("selection"));
   gtk_css_node_set_parent (priv->selection_node, priv->text_window->css_node);
-  gtk_css_node_set_state (priv->selection_node, gtk_css_node_get_state (priv->text_window->css_node));
+  gtk_css_node_set_state (priv->selection_node,
+                          gtk_css_node_get_state (priv->text_window->css_node) & ~GTK_STATE_FLAG_DROP_ACTIVE);
   gtk_css_node_set_visible (priv->selection_node, FALSE);
   g_object_unref (priv->selection_node);
 }
@@ -4922,6 +4923,9 @@ gtk_text_view_state_flags_changed (GtkWidget     *widget,
 
   state = gtk_widget_get_state_flags (widget);
   gtk_css_node_set_state (priv->text_window->css_node, state);
+
+  state &= ~GTK_STATE_FLAG_DROP_ACTIVE;
+
   gtk_css_node_set_state (priv->selection_node, state);
   if (priv->left_window)
     gtk_css_node_set_state (priv->left_window->css_node, state);
@@ -8318,6 +8322,8 @@ gtk_text_view_drag_leave (GtkWidget        *widget,
     g_source_remove (priv->scroll_timeout);
 
   priv->scroll_timeout = 0;
+
+  gtk_drag_unhighlight (widget);
 }
 
 static gboolean
@@ -8420,6 +8426,8 @@ gtk_text_view_drag_motion (GtkWidget        *widget,
     g_source_set_name_by_id (text_view->priv->scroll_timeout, "[gtk+] drag_scan_timeout");
   }
 
+  gtk_drag_highlight (widget);
+
   /* TRUE return means don't propagate the drag motion to parent
    * widgets that may also be drop sites.
    */